In computing, applications running in the host use logical block addresses (LBAs) to specify the location of blocks of data stored on computer storage devices, such as a hard drive disk or flash memory. Flash memory is an electronic non-volatile data storage medium that can be electrically erased and reprogrammed. Because the physical block address (PBA) of flash memory is different from an associated LBA, either a host flash driver or flash controller firmware needs to translate an LBA into a PBA for writing data to or reading data from flash memory.
For example, FIG. 1 shows an embodiment involving a host 10 and an external storage system 11 that includes a flash controller 16 and flash memory 18. As can be seen, file system 20 within the host 20 stores data using LBAs, whereas flash memory 18 stores data using PBAs. Because data blocks are potentially being moved and shuffled around in flash memory 18, LBA to PBA mapping table 14 is required to properly reference blocks between the host file system 20 and external flash memory 18. In this embodiment, the LBA to PBA mapping table 14 resides within and is maintained within a local memory (i.e., flash driver 12) of the host 10. If host 10 wants to move data with multiple blocks between host file system 20 and flash memory 18, the host needs to issue a separate command for each block. Accordingly, multiple commands are thus required to process contiguous LBAs since flash memory 18 requires the PBA of each block. This unfortunately results in a high amount of input/output (IO) traffic between host 10 and external flash memory 18, particularly in cases where certain blocks of data are being regularly accessed.